package com.kapcb.mybatis.plus.interceptor;

import com.baomidou.mybatisplus.annotation.DbType;
import com.kapcb.common.constant.PropertiesConstant;
import com.kapcb.common.constant.StringPool;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * <a>Title: MyBatisProperties </a>
 * <a>Author: kapcb <a>
 * <a>Description: MyBatisProperties <a>
 *
 * @author Kpacb
 * @version 1.0
 * @date 2024/6/22 9:13
 * @since 1.0
 */
@Data
@ConfigurationProperties(prefix = PropertiesConstant.PROPERTIES_PREFIX + ".mybatis")
public class MyBatisProperties {

    /**
     * 数据库类型，默认 MySQL
     * see {@link com.baomidou.mybatisplus.annotation.DbType}
     */
    private DbType dbType = DbType.MYSQL;

    /**
     * 是否开启 MyBatis Plus 分页插件，默认开启
     */
    private boolean enablePagination = true;

    /**
     * 是否开启 MyBatis Plus 乐观锁插件，默认开启
     */
    private boolean enableOptimisticLocker = true;

    /**
     * 是否开启 MyBatis Plus 防全表更新与删除插件，默认拦截不带条件的删除、更新操作，默认开启
     */
    private boolean enableBlockAttack = true;

    /**
     * MyBatis Plus 插入操作自动填充的创建用户名称字段，默认 createUser
     */
    private String autoFillCreateUserFieldName = StringPool.CREATE_USER;

    /**
     * MyBatis Plus 插入操作自动填充的创建用户 id 字段，默认 createUserId
     */
    private String autoFillCreateUserIdFiledName = StringPool.CREATE_USER_ID;

    /**
     * MyBatis Plus 插入操作自动填充的创建时间字段，默认 createTime
     */
    private String autoFillCreateTimeFieldName = StringPool.CREATE_TIME;

    /**
     * MyBatis Plus 插入操作自动填充的更新用户名称字段，默认 updateUser
     */
    private String autoFillUpdateUserFieldName = StringPool.UPDATE_USER;

    /**
     * MyBatis Plus 插入操作自动填充的创建用户 id 字段，默认 updateUserId
     */
    private String autoFillUpdateUserIdFiledName = StringPool.UPDATE_USER_ID;

    /**
     * MyBatis Plus 插入操作自动填充的更新时间字段，默认 updateTime
     */
    private String autoFillUpdateTimeFieldName = StringPool.UPDATE_TIME;
}
